/**
 * 简化的路由插件
 * 提供基本的页面跳转功能
 */

// 页面路径映射
const pageMap = {
  'work': 'pages/work/index', 
  'mine': 'pages/mine/index',
  'login': 'pages/login',
  'register': 'pages/register'
};

const router = {
  /**
   * 跳转到指定页面
   * @param {string} page 页面名称
   * @param {object} params 页面参数
   */
  push(page, params = {}) {
    if (!page) {
      console.error('页面名称不能为空');
      return;
    }
    
    // 获取映射的页面路径
    const targetPage = pageMap[page] || `pages/${page}/index`;
    
    // 构建URL
    let url = `/${targetPage}`;
    
    // 添加参数
    if (Object.keys(params).length > 0) {
      const queryString = Object.keys(params)
        .map(key => `${key}=${encodeURIComponent(params[key])}`)
        .join('&');
      url += `?${queryString}`;
    }
    
    console.log('跳转页面:', url);
    
    // 使用uni.navigateTo跳转
    uni.navigateTo({
      url: url,
      fail: (err) => {
        console.error('页面跳转失败:', err);
        // 如果跳转失败，尝试使用switchTab（用于tabBar页面）
        if (page === 'index' || page === 'work' || page === 'mine') {
          uni.switchTab({
            url: url,
            fail: (switchErr) => {
              console.error('Tab页面跳转也失败:', switchErr);
              uni.showToast({
                title: '页面跳转失败',
                icon: 'none'
              });
            }
          });
        } else {
          uni.showToast({
            title: '页面跳转失败',
            icon: 'none'
          });
        }
      }
    });
  },

  /**
   * 重定向到指定页面
   * @param {string} page 页面名称
   * @param {object} params 页面参数
   */
  replace(page, params = {}) {
    if (!page) {
      console.error('页面名称不能为空');
      return;
    }
    
    const targetPage = pageMap[page] || `pages/${page}/index`;
    let url = `/${targetPage}`;
    
    if (Object.keys(params).length > 0) {
      const queryString = Object.keys(params)
        .map(key => `${key}=${encodeURIComponent(params[key])}`)
        .join('&');
      url += `?${queryString}`;
    }
    
    uni.redirectTo({
      url: url,
      fail: (err) => {
        console.error('页面重定向失败:', err);
        uni.showToast({
          title: '页面重定向失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 返回上一页
   * @param {number} delta 返回的页面数，默认为1
   */
  back(delta = 1) {
    uni.navigateBack({
      delta: delta,
      fail: () => {
        // 如果没有上一页，跳转到首页
        uni.switchTab({
          url: '/pages/index'
        });
      }
    });
  },

  /**
   * 跳转到Tab页面
   * @param {string} page 页面名称
   */
  pushTab(page) {
    if (!page) {
      console.error('页面名称不能为空');
      return;
    }
    
    const targetPage = pageMap[page] || `pages/${page}/index`;
    const url = `/${targetPage}`;
    uni.switchTab({
      url: url,
      fail: (err) => {
        console.error('Tab页面跳转失败:', err);
        uni.showToast({
          title: '页面跳转失败',
          icon: 'none'
        });
      }
    });
  }
};

export default {
  install(app) {
    // 挂载到全局
    app.config.globalProperties.$router = router;
    
    // 兼容Vue2的写法
    app.config.globalProperties.$Router = router;
  }
}; 